library verilog;
use verilog.vl_types.all;
entity cmsdk_iop_gpio is
    generic(
        ALTERNATE_FUNC_MASK: vl_logic_vector(0 to 15) := (Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1, Hi1);
        ALTERNATE_FUNC_DEFAULT: vl_logic_vector(0 to 15) := (Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0, Hi0);
        BE              : integer := 0
    );
    port(
        FCLK            : in     vl_logic;
        HCLK            : in     vl_logic;
        HRESETn         : in     vl_logic;
        IOSEL           : in     vl_logic;
        IOADDR          : in     vl_logic_vector(11 downto 0);
        IOWRITE         : in     vl_logic;
        IOSIZE          : in     vl_logic_vector(1 downto 0);
        IOTRANS         : in     vl_logic;
        IOWDATA         : in     vl_logic_vector(31 downto 0);
        ECOREVNUM       : in     vl_logic_vector(3 downto 0);
        PORTIN          : in     vl_logic_vector(15 downto 0);
        IORDATA         : out    vl_logic_vector(31 downto 0);
        PORTOUT         : out    vl_logic_vector(15 downto 0);
        PORTEN          : out    vl_logic_vector(15 downto 0);
        PORTFUNC        : out    vl_logic_vector(15 downto 0);
        GPIOINT         : out    vl_logic_vector(15 downto 0);
        COMBINT         : out    vl_logic
    );
    attribute mti_svvh_generic_type : integer;
    attribute mti_svvh_generic_type of ALTERNATE_FUNC_MASK : constant is 1;
    attribute mti_svvh_generic_type of ALTERNATE_FUNC_DEFAULT : constant is 1;
    attribute mti_svvh_generic_type of BE : constant is 1;
end cmsdk_iop_gpio;
